
{
\Large
\begin{center}
\textbf{Resumo}
\end{center}
}

%Linguagens de programação interpretadas têm trocado performance por
%maior expressividade, flexibilidade e dinamicidade. A reescrita de
%trechos de código críticos em linguagens compiladas tem sido empregada
%como meio de reduzir o impacto da máquina virtual no tempo de execução
%de programas.
A compilação dinâmica tem sido utilizada em implementações de
linguagens de programação interpretadas que buscam maior
desempenho. De modo a trazer esta técnica para a linguagem
\texttt{Tcl}, um compilador JIT não-otimizador para um subconjunto
da mesma é proposto. Optou-se pelo modo misto de
execução, fazendo com que a execução de código de máquina, gerado por
este compilador dinâmico, e a interpretação pura se alternem. A
unidade de compilação foi tomada como procedimentos por inteiro, tendo
a compilação dos mesmos disparada no momento em que é atingido um
limite de execuções interpretadas realizadas com
sucesso. Uma representação intermediária construída por quádruplas foi
escolhida, sendo estas utilizadas até a fase de geração de código para
a arquitetura IA--32. Simplicidade, manutenibilidade e flexibilidade
foram as características seguidas na construção desta ferramenta.
Para avaliar o desempenho do compilador, foram desenvolvidos 6
\textit{benchmarks} específicos. Em média, os dados coletados
indicaram uma melhoria entre 1,25 e 23,55 vezes em relação ao tempo de
execução por parte do interpretador. O tempo de compilação ficou
abaixo de 80 micro segundos. Além disso, o código gerado reduziu em até
96,9\% a quantidade de instruções de máquina executadas em comparação
ao interpretador.

\quad\\
\quad\\
\textit{Palavras-chave}: Tcl, JIT, código de máquina

\pagebreak
